﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JeuDeDames;

namespace JeuDeDames
{
    public class Dame : Piece
    {
        public Dame(int couleur, int position, Joueur joueur, bool peutBouger)
        {
            this.couleur = couleur;
            this.joueur = joueur;
            pion = false;
        }

        public override string ToString()
        {
            if (couleur == BLANC)
            {
                return "X";
            }
            else
            {
                return "O";
            }
        }

        public override bool estDeplaceable(CaseNoire dest)
        {
            if (dest.estVide()) //case d'arrivée pleine, déplacement impossible
            {
                if ((dest.position - this.position % 11 == 0) || (dest.position - this.position % 13 == 0))
                {
                    bool casePleine = false;
                    int position = dest.position;
                    int direction = this.direction(dest);
                    while (position != this.position || casePleine == false) // vas checker chaque case si estVide() depuis la case d'arrivée jusqu'à la case de départ
                    {
                        position = position - direction;
                        if ((Damier.damier[position] as CaseNoire).estVide())
                        {
                            casePleine = true; //une case n'est pas vide, on quitte la boucle, le déplacement n'est pas possible
                        }
                    }
                    if (casePleine == false)
                    {
                        return true; //on a fini la boucle avec la 1ere condition, aucunes cases n'est pleine sur le chemin du déplacement, il est donc possible
                    }
                    return false; // le déplacement n'est pas possible car la direction n'est pas bonne
                }
            }
            return false; // retour du 1er if
        } // estDeplacable();

        //TODO
        public override int direction(CaseNoire dest)
        {
            int direction = dest.position - this.position;
            if (direction < 0) //direction des blancs
            {
                if (dest.position - this.position % 11 == 0)
                {
                    return -11;
                }
                else
                {
                    return -13;
                }
            }
            else //direction des noires
            {
                if (dest.position - this.position % 11 == 0)
                {
                    return 11;
                }
                else
                {
                    return 13;
                }

            }
        } //direction()

        //TODO
        public override void mange(Coup coup)
        {

        } //mange()

        //TODO
        public override bool estMangeable(CaseNoire destination)
        {
            return true;
        }//estMangeable()

        //TODO
        public override int caseAManger(CaseNoire destination)
        {
            return 0;
        }

        //TODO
        public override int deplacementOuMangeage(CaseNoire origine, CaseNoire destination)
        {
            return 0;
        }
    }
}
